#!/usr/bin/bash

# 获取两个目录的文件数量
mnt1=$(ls -1 /mnt/$(date +%Y%m%d)/ | wc -l)
mnt2=$(ls -1 /mnt2/$(date +%Y%m%d)/ | wc -l)

# 设置接收短信通知的人员电话号码
tel=(
电话号码1
电话号码2
)
# 编辑告警信息并转换成要求的格式，此处转成GBK
msg=$(echo "新华社主备存储不一致，登陆10.149.212.96查看/mnt和/mnt2文件数量是否一致" | iconv -f utf8 -t gbk )
# 获取当前时间
now=$(date +%s)
# 未避免误报，连续触发两次告警再发送短信，此处用来统计触发次数
alert_sum=$(cat /tmp/alert_count)

# 判断是否有/tmp/send_msg_time文件,有的话获取最后发送短信的时间戳，没有的话重置为0
if [ -f /tmp/send_msg_time ]
then
    last_send=$(cat /tmp/send_msg_time)
else
    last_send=0
fi

# 判断两个目录文件数是否一致，且上次发送短信时间大于半小时
if (( mnt1 != mnt2 && now-last_send>=1800 ))
then
# 如果符合条件，告警次数累加1，写入/tmp/alert_count文件中
    alert_sum=$(( alert_sum + 1 ))
    echo $alert_sum > /tmp/alert_count
fi

# 判断告警次数是否达到2次
if (( alert_sum>=2 ))
then
    for i in "${tel[@]}"
    do
# 发送短信给所有联系人
        curl "http://phonemessage-monitor.cctv.cn/QxtSms/QxtFirewall?OperID=zgcctv&OperPass=zgcctv&DesMobile=${i}&Content=${msg}&ContentType=8"
    done
# 写入最后发送短信时间
    date +%s > /tmp/send_msg_time
# 重置触发告警次数
    echo 0 > /tmp/alert_count
fi



##################################################################

#!/usr/bin/bash

# 设置接收短信通知的人员电话号码
tel=(
电话号码1
电话号码2
)

# 编辑告警内容
msg=$(echo "美联存储3小时无数据，登陆10.149.212.96:/glomedia/globalmedia/MEILIAN/VIDEO/查看" | iconv -f utf8 -t gbk )

# 设置监控目录地址
dir="/glomedia/globalmedia/MEILIAN/VIDEO/"

# 判断是否有监控进程
if ! pgrep inotifywait 
then 
    inotifywait -mre create $dir >> /tmp/get_file_msg &
else
    ps -ef | grep inotifywait
fi

# 判断监控目录三小时内是否有新增文件
if [ -f /tmp/get_file_msg ]
then
    last_get=$(stat -c %Y /tmp/get_file_msg)
else
    last_get=0
fi

# 查看上次发送告警时间
if [ -f /tmp/send_msg_time_meilian ] 
then 
    last_send=$(cat /tmp/send_msg_time_meilian)
else
    last_send=0
fi

# 获取当前时间
now=$(date +%s)

# 判断是小时内是否发送过短信，如果没发送过且触发告警，则发送
if (( now-last_get>=10800 && now-last_send>=1800 ))
then
    for i in "${tel[@]}"
    do
        curl "http://短信网关地址/QxtSms/QxtFirewall?OperID=xxxx&OperPass=xxxx&DesMobile=${i}&Content=${msg}&ContentType=8"
    done
    date +%s > /tmp/send_msg_time_meilian
fi